<?php
/**
 * 客户文件控制器
 */

namespace app\controller\customer;

use app\BaseController;
use app\common\FileUploadConfig; // 导入全局文件上传配置类

class File extends BaseController
{
    /**
     * 添加附件
     */
    public function add()
    {
        // 文件上传逻辑
        /** @var \think\file\UploadedFile $file */
        $file = request()->file('file');
        if (!$file) {
            return json(['code' => 1, 'msg' => '请选择文件']);
        }
        
        try {
            // 使用全局配置处理文件上传
            $filename = $file->getOriginalName();
            $extension = $file->getOriginalExtension();
            
            // 验证文件类型和大小
            if (!FileUploadConfig::isAllowedExtension($extension)) {
                return json(['code' => 1, 'msg' => '不支持的文件类型']);
            }
            
            if ($file->getSize() > FileUploadConfig::getMaxSize()) {
                return json(['code' => 1, 'msg' => '文件大小超过限制']);
            }
            
            // 生成安全的文件名
            $newFilename = FileUploadConfig::generateSafeFileName($filename);
            
            // 获取文件存储路径
            $savePath = FileUploadConfig::getStoragePath('customer', 'attachment');
            
            // 确保目录存在
            FileUploadConfig::ensureDirectoryExists($savePath);
            
            // 移动文件
            $file->move(public_path($savePath), $newFilename);
            $filePath = $savePath . '/' . $newFilename;
            
            // 确保路径使用正斜杠，避免Windows系统下的反斜杠问题
            $filePath = str_replace('\\', '/', $filePath);
            
            // 返回符合项目规范的响应格式
            return json([
                'code' => 0, 
                'msg' => '上传成功', 
                'data' => [
                    'path' => $filePath,
                    'filename' => $newFilename,
                    'original_name' => $filename,
                    'size' => $file->getSize(),
                    'ext' => $extension
                ]
            ]);
            
        } catch (\Exception $e) {
            return json(['code' => 1, 'msg' => '上传失败：' . $e->getMessage()]);
        }
    }
    
    /**
     * 删除附件
     */
    public function del()
    {
        $path = input('path');
        if (!$path) {
            return json(['code' => 1, 'msg' => '参数错误']);
        }
        
        // 使用全局配置处理路径
        $fullPath = FileUploadConfig::getFullPath($path);
        
        if (file_exists($fullPath)) {
            unlink($fullPath);
            return json(['code' => 0, 'msg' => '删除成功']);
        } else {
            return json(['code' => 1, 'msg' => '文件不存在']);
        }
    }
}